package com.shujia.wyh.day09;

/*
        类的组成：成员变量、成员方法
        今天又学了一个新的成员：构造方法
        改进类的组成：
            成员变量（使用private修饰）
            构造方法（写一个无参构造方法和一个带全部参数的构造方法）
            成员方法（getXxx()和setXxx(),show()）
       类的成员方法划分：
        1、根据返回值
            有明确返回值方法
            返回void类型的方法
        2、根据形式参数
            无参方法
            带参方法

 */

class Phone {
    //成员变量
    private String brand;
    private int price;
    private String color;

    //构造方法
    Phone() {
    }

    Phone(String brand, int price, String color) {
        this.brand = brand;
        this.price = price;
        this.color = color;
    }

    //成员方法
    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getBrand() {
        return brand;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public int getPrice() {
        return price;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String getColor() {
        return color;
    }

    //有返回值没有参数的方法
    public String getString() {
        return "大数据";
    }

    //有返回值有参数的方法
    public int getSum(int a, int b) {
        return a + b;
    }

    //没有返回值没有参数的方法
    public void shuChu() {
        System.out.println("今天下雨了。");
    }

    //没有返回值有参数的方法
    public void call(String name) {
        System.out.println("打电话给：" + name);
    }

    //提供一个方法输出所有的成员变量值
    public void show() {
        System.out.println("手机的颜色是：" + color + ",品牌是：" + brand + ",价格是：" + price);
    }
}

public class StudentDemo3 {
    public static void main(String[] args) {
        //使用无参构造方法创建对象并使用set方法来给成员变脸进行赋值
        Phone p1 = new Phone();
        p1.setBrand("华为");
        p1.setPrice(3999);
        p1.setColor("黑色");
        p1.show();

        System.out.println("=================================");
        //使用带参数的构造方法创建对象
        Phone p2 = new Phone("苹果", 2999, "白色");
        p2.show();
        System.out.println("=================================");
        //调用有返回值没有参数的方法
        //要么用变量接收，要么直接输出
        System.out.println(p2.getString());
        //调用有返回值有参数的方法
        System.out.println(p2.getSum(1, 2));
        //调用无返回值无参数的方法
        p2.shuChu();
        //调用无返回值有参数的方法
        p2.call("李毅");
    }
}
